package method;

import java.util.Scanner;

//6.方法(调试)
public class java2_24 {
    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        System.out.println("请输入一个年份");
//        while (scanner.hasNext()) {
//            int year = scanner.nextInt();
//            boolean isLeapYear = isLeapYear(year);
//            if (isLeapYear)
//                System.out.println(year + "是闰年");
//            else
//                System.out.println(year + "不是闰年");
//        while(true){
//        isLeapYear2();//分两种写法,一般第一种写法兼容性强,建议使用第一种
//        }
//    }

//    public static boolean isLeapYear(int year) {
//        //(修饰符,返回值类型,方法名称),修饰符现阶段直接使用public static
//        if (year % 100 == 0) {
//            if (year % 400 == 0)
//                return true;
//            else
//                return false;
//        } else {
//            if (year % 4 == 0)
//                return true;
//            else
//                return false;

//        }
//    }
//    public static void isLeapYear2() {
//        //(修饰符,返回值类型,方法名称)
//        Scanner scanner = new Scanner(System.in);
//        System.out.println("请输入一个年份");
//        int year = scanner.nextInt();
//        if (year % 100 == 0) {
//            if (year % 400 == 0)
//                System.out.println(year + "闰年");
//            else
//                System.out.println(year + "不是闰年");
//        } else {
//            if (year % 4 == 0)
//                System.out.println(year + "闰年");
//            else
//                System.out.println(year + "不是闰年");
//        }

        //递归函数
//        Scanner scanner = new Scanner(System.in);
//        System.out.println("请输入一个数");
//        int input = scanner.nextInt();
//        System.out.println(input + "的阶乘为" + fac(input));
//}
//        public static int fac(int input){
//        if(input == 1){
//            return 1;
//        }
//        return input * fac(input - 1);
//        }

        //用递归的方法来正着打印一个数的每一位******,要经常回顾
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个数");
        int input = scanner.nextInt();
        System.out.println(fib(input));
//        print_num(input);
    }
//    public static void print_num (int input){
//        if (input >= 10) {//递归如果没有结束语句的话,会一直创建空间,造成栈溢出
//            print_num(input / 10);
//        }//这个要执行完才能轮到下面,随着print_num(1)的执行,print_num(12)的if就算执行完了,开始打印(12 % 10) = 2,
//        // 随着print_num(12)的执行,print_num(123)的if就算执行完了,开始打印(123 % 10) = 3,以此类推,最后会打印1234
//        System.out.print(input % 10 +" ");
////        System.out.printf("%d ",input % 10);//两种写法都可以
//
//    }

    //将输入的整数每位数字相加
//       public static int sum (int input){
//        if(input < 10){
//            return input;
//        }
//        return input % 10 + sum(input / 10);
//       }

    //斐波那契数列的递归和非递归
    // 递归(执行效率低)
//    public static int fib (int input){
//        if(input == 1 || input == 2){
//            return 1;
//        }else{
//            return fib(input-1) + fib(input-2);
//        }
//    }
    //迭代(高效率)
    public static int fib (int input) {
        int last1 = 1;
        int last2 = 1;
        int cur = 0;
        if (input == 1 || input == 2) {
            return 1;
        }
        for (int i = 3; i <= input; i++) {
            cur = last1 + last2;
            last1 = last2;
            last2 = cur;
        }
        return cur;
    }


}